/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.quician.webapp.controllers;

import com.quician.fifa.Grupo;
import com.quician.webapp.ejbs.GroupManager;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;

/**
 *
 * @author quician
 */
@Named(value="gruposAdminController")
@SessionScoped
public class GruposAdminController implements Serializable{
    private static final long serialVersionUID = 1L;

    private String nombre;
    
    private List<Grupo> Grupos;

    private Grupo grupo; // Grupo para persistir o modificar

    private boolean LoadData = true;
    
    @EJB
    private GroupManager groupManager;
    
    public void LoadGroups(){
        if(this.LoadData){
            Grupos =  groupManager.getGroups();
            this.LoadData = false;
        }
    }
    
    public void AddNewGroup(){
        try {
            grupo = new Grupo();
            grupo.setNombre(nombre); 

            FacesContext context = FacesContext.getCurrentInstance();
            boolean success = groupManager.AddGroup(grupo); 
            if(success){
                context.addMessage(null, new FacesMessage("Nuevo Grupo",  "El grupo ha sido creado.") );
                this.LoadData = true;
            }
            else
                context.addMessage(null, new FacesMessage("Nuevo Grupo",  "No fue posible crear el nuevo grupo.") );
            context.getExternalContext().redirect("Grupos.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(GruposAdminController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void ModifyGroup(){
        try {
            FacesContext context = FacesContext.getCurrentInstance();
            boolean success = groupManager.UpdateGroup(grupo);
            if(success)
                context.addMessage(null, new FacesMessage("Modificación Grupo",  "El grupo ha sido modificado.") );
            else
                context.addMessage(null, new FacesMessage("Modificación Grupo",  "No fue posible modificar el grupo.") );
            context.getExternalContext().redirect("Grupos.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(GruposAdminController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void DeleteGroup(Grupo _grupo){
        grupo = _grupo;
        FacesContext context = FacesContext.getCurrentInstance();
            boolean success = groupManager.DeleteGroup(grupo);
            if(success){
                context.addMessage(null, new FacesMessage("Eliminación Grupo",  "El grupo ha sido eliminado.") );
                this.LoadData = true;
                grupo = null;
            }
            else
                context.addMessage(null, new FacesMessage("Eliminación Grupo",  "No fue posible eliminar el grupo.") );
    }
    
    public void RedirectToModifyGroup(Grupo _grupo){
        try {
            grupo = _grupo;
            FacesContext context = FacesContext.getCurrentInstance();
            context.getExternalContext().redirect("modificarGrupo.xhtml");
        } catch (IOException ex) {
            Logger.getLogger(GruposAdminController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
    
    public String getNombre() {return nombre;}
    public void setNombre(String nombre) {this.nombre = nombre;}
    
    public List<Grupo> getGrupos() { return Grupos; }
    public void setGrupos(List<Grupo> Grupos) { this.Grupos = Grupos;}
    
    public Grupo getGrupo() {return grupo;}
    public void setGrupo(Grupo grupo) {this.grupo = grupo;}
}
